decision-making in programming